
extern "C" __declspec(dllexport) void Scene_DrawAll(ISceneManager *scmgr)
{
	scmgr->drawAll();
}

extern "C" __declspec(dllexport) IAnimatedMeshSceneNode* Scene_addAnimatedMeshSceneNode(ISceneManager *scmgr, IAnimatedMesh *mesh, int id,
	float xPos, float yPos, float zPos, float xRot, float yRot, float zRot, float xScale, float yScale, float zScale)
{
	return scmgr->addAnimatedMeshSceneNode(mesh, 0, id, vector3df(xPos, yPos, zPos), vector3df(xRot, yRot, zRot), vector3df(xScale, yScale, zScale));
}

extern "C" __declspec(dllexport) ITerrainSceneNode* Scene_addTerrainSceneNode(ISceneManager *scmgr, char* path, int id,
	float xPos, float yPos, float zPos, float xRot, float yRot, float zRot, float xScale, float yScale, float zScale, int maxLod)
{
	return scmgr->addTerrainSceneNode(path, 0, id, vector3df(xPos, yPos, zPos), vector3df(xRot, yRot, zRot), vector3df(xScale, yScale, zScale),
		SColor(255, 255, 255, 255), maxLod);
}

extern "C" __declspec(dllexport) ISceneNode* Scene_addSkyDomeSceneNode(ISceneManager *scmgr, ITexture *tex, unsigned int hRes, unsigned int vRes,
	float texturePercentage, float spherePercentage, float radius, int id)
{
	return scmgr->addSkyDomeSceneNode(tex, hRes, vRes, texturePercentage, spherePercentage, radius, 0, id);
}

extern "C" __declspec(dllexport) ICameraSceneNode* Scene_addCameraSceneNodeFPS(ISceneManager *scmgr, int id, float rotateSpeed, float moveSpeed,
	bool noVerticalMovement, float jumpSpeed, bool invertMouse, bool makeActive)
{
	return scmgr->addCameraSceneNodeFPS(0, rotateSpeed, moveSpeed, id, 0, 0, noVerticalMovement, jumpSpeed, invertMouse, makeActive);
}

extern "C" __declspec(dllexport) IMeshSceneNode* Scene_AddOctree(ISceneManager *scmgr, IMesh *mesh,
	int id, int minimalPolysPerNode, bool alsoAddIfMeshPointerZero)
{
	return scmgr->addOctreeSceneNode(mesh, 0, id, minimalPolysPerNode, alsoAddIfMeshPointerZero);
}

extern "C" __declspec(dllexport) IMeshSceneNode* Scene_AddOctreeAnimated(ISceneManager *scmgr, IAnimatedMesh *mesh,
	int id, int minimalPolysPerNode, bool alsoAddIfMeshPointerZero)
{
	return scmgr->addOctreeSceneNode(mesh, 0, id, minimalPolysPerNode, alsoAddIfMeshPointerZero);
}

extern "C" __declspec(dllexport) IAnimatedMesh* Scene_getMesh(ISceneManager *scmgr, char* path)
{
	return scmgr->getMesh(path);
}

extern "C" __declspec(dllexport) IMeshSceneNode* Scene_addSphereSceneNode(ISceneManager *scmgr, f32 radius, s32 polyCount, ISceneNode *parent, s32 id,  
	float xPos, float yPos, float zPos, float xRot, float yRot, float zRot, float xScale, float yScale, float zScale)
{		
	return scmgr->addSphereSceneNode(radius, polyCount, parent, id, vector3df(xPos, yPos, zPos), vector3df(xRot, yRot, zRot), vector3df(xScale, yScale, zScale));
}

extern "C" __declspec(dllexport) IMeshSceneNode* Scene_addCubeSceneNode(ISceneManager *scmgr, f32 size, ISceneNode *parent, s32  id,  
	float xPos, float yPos, float zPos, float xRot, float yRot, float zRot, float xScale, float yScale, float zScale)
{
	return scmgr->addCubeSceneNode(size, parent, id, vector3df(xPos, yPos, zPos), vector3df(xRot, yRot, zRot), vector3df(xScale, yScale, zScale));
}

extern "C" __declspec(dllexport) ISceneNodeAnimator* Scene_createFlyCircleAnimator(ISceneManager *scmgr, f32 xPos, f32 yPos, f32 zPos,   
	f32 radius, f32 speed, f32 xDir, f32 yDir, f32 zDir, f32 startPosition, f32 radiusEllipsoid) 
{
	return scmgr->createFlyCircleAnimator(vector3df(xPos, yPos, zPos), radius, speed, vector3df(xDir, yDir, zDir), startPosition, radiusEllipsoid);
}

extern "C" __declspec(dllexport) ISceneNodeAnimator* Scene_createFlyStraightAnimator(ISceneManager *scmgr, f32 xStart, f32 yStart, f32 zStart,
	f32 xEnd, f32 yEnd, f32 zEnd, u32 timeForWay, bool loop, bool pingpong)
{
	return scmgr->createFlyStraightAnimator(vector3df(xStart, yStart, zStart), vector3df(xEnd, yEnd, zEnd), timeForWay, loop, pingpong);
}

extern "C" __declspec(dllexport) video::IVideoDriver* Scene_GetVideoDriver(ISceneManager *scmgr)
{
	return scmgr->getVideoDriver();
}
